<?php

namespace App;

//use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;


class AdminUser extends Authenticatable
{
    protected $guarded = [];

    protected $rememberTokenName = '';

    //用户有哪些角色
    
    public function roles()
    {
        return $this->belongsToMany(\App\AdminRole::class, 'admin_role_user', 'user_id', 'role_id')->withPivot(['user_id', 'role_id']);
    }

    //判断是否有某个角色、某些角色; $roles 为 collection 对象
    public function isInRoles($roles)
    {
        return !!$roles->intersect($this->roles)->count();
    }

    //给用户分配角色
    public function assignRole($role)
    {
        return $this->roles()->save($role);
    }

    //取消用户分配的角色
    public function deleteRole($role)
    {
        return $this->roles()->detach($role);
    }

    //用户是否有权限; 判断对应permission 对应的用户是否和当前用户所属的角色有重叠
    public function hasPermission($permission)
    {
        return $this->isInRoles($permission->roles);
    }
}
